/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cinfo.siga.gestionacademica.ui.modelos;

import java.util.LinkedList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import org.cinfo.core.entidades.Curso;
import org.cinfo.core.entidades.CursoModulo;

/**
 *
 * @author lartkma
 */
public class TablaCursosModuloTableModel extends AbstractTableModel{

    private List<CursoModulo> listado;
    private Boolean[] editable = {true, false, true};
    private static Class[] clases = {Integer.class, String.class, Integer.class};
    private static String[] titulos = {"Orden", "Nombre", "Horas"};
    

    public TablaCursosModuloTableModel() {
        listado = new LinkedList<CursoModulo>();
    }

    public TablaCursosModuloTableModel(List<CursoModulo> listado) {
        this.listado = listado;
    }
    
    @Override
    public int getRowCount() {
        return listado.size();
    }

    @Override
    public int getColumnCount() {
        return 3;
    }

    @Override
    public String getColumnName(int columnIndex) {
        return titulos[columnIndex];
    }

    @Override
    public Class<?> getColumnClass(int columnIndex) {
        return clases[columnIndex];
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return editable[columnIndex];
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        switch(columnIndex){
            case 0:
                return listado.get(rowIndex).getOrden();
            case 1:
                return listado.get(rowIndex).getCurso().getNombre();
            case 2:
                return listado.get(rowIndex).getNumeroHoras();
            default:
                throw new IndexOutOfBoundsException("No hay mas columnas");
        }
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        switch(columnIndex){
            case 0:
                listado.get(rowIndex).setOrden((Integer)aValue);
                break;
            case 1:
                listado.get(rowIndex).getCurso().setNombre((String)aValue);
                break;
            case 2:
                listado.get(rowIndex).setNumeroHoras((Integer)aValue);
                break;
            default:
                throw new IndexOutOfBoundsException("No hay mas columnas");
        }
    }

    public List<CursoModulo> getCursosModulo(){
        return listado;
    }
    
    public void agregarCursoModulo(CursoModulo cm){
        listado.add(cm);
        fireTableRowsInserted(listado.size()-1, listado.size()-1);
    }
    
    public CursoModulo getCursoModulo(int rowIndex){
        return listado.get(rowIndex);
    }
    
    public void eliminarCursoModulo(int rowIndex){
        listado.remove(rowIndex);
        fireTableRowsDeleted(rowIndex, rowIndex);
    }
    
    public boolean estaCurso(Curso aSaber){
        for(CursoModulo cursoModulo : listado){
            if(cursoModulo.getCurso().equals(aSaber))
                return true;
        }
        return false;
    }
}
